Nginx를 활용한 SSL 인증서 설치 및 HTTPS 설정 가이드

개요

웹사이트를 안전하게 서비스하기 위한 HTTPS 설정 가이드입니다. SSL 인증서를 설치하고 Nginx 웹 서버를 설정하는 전체 과정을 안내합니다.

Web Application HTTPS Data Flow

Nginx vs Apache 주요 차이점:

사전 준비사항

단계별 설치 가이드

1. Nginx 웹 서버 설치

# 패키지 목록 업데이트
sudo apt update

# Nginx 웹 서버 설치
sudo apt install nginx

# Nginx 실행 상태 확인
sudo systemctl status nginx

2. SSL 인증서 발급 도구(Certbot) 설치 및 인증서 발급

Certbot 설치

# Certbot과 Nginx 플러그인 설치
sudo apt install certbot python3-certbot-nginx

# 설치된 Certbot 버전 확인
certbot --version

SSL 인증서 발급

# your-domain.com 부분을 실제 도메인으로 변경하여 실행
sudo certbot --nginx -d your-domain.com

💡 인증서 발급 과정 안내:

3. Nginx 서버 설정

설정 파일 생성

# Nginx 설정 파일 생성 (your-domain.com을 실제 도메인으로 변경)
sudo nano /etc/nginx/sites-available/your-domain.com

Nginx 설정 코드

# HTTP 서버 설정
server {
    listen 80;                    # 80번 포트(HTTP)로 들어오는 접속을 받음
    server_name your-domain.com;  # 설정을 적용할 도메인 이름

    # 모든 HTTP 요청을 HTTPS로 리다이렉트
    return 301 https://$server_name$request_uri;
}

# HTTPS 서버 설정
server {
    listen 443 ssl;                # 443번 포트(HTTPS)로 들어오는 접속을 받음
    server_name your-domain.com;   # 설정을 적용할 도메인 이름

    # SSL 인증서 파일 경로 설정
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;      # SSL 인증서 파일
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;    # SSL 인증서 키 파일

    # SSL 보안 설정
    ssl_protocols TLSv1.2 TLSv1.3;    # 사용할 SSL/TLS 프로토콜 버전
    ssl_prefer_server_ciphers on;      # 서버 측에서 선호하는 암호화 방식 사용
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;   # 사용할 암호화 알고리즘

    # Node.js 애플리케이션으로 요청 전달 설정
    location / {
        proxy_pass http://localhost:3000;   # Node.js 서버로 요청 전달 (포트번호 필요시 변경)

        # 프록시 서버 설정
        proxy_set_header Host $host;                    # 원래 요청의 도메인 정보 전달
        proxy_set_header X-Real-IP $remote_addr;        # 실제 방문자의 IP 주소 전달
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   # 프록시 서버를 거친 IP 정보
        proxy_set_header X-Forwarded-Proto $scheme;     # 원래 요청의 프로토콜(http/https) 전달
    }
}

설정 활성화 및 적용

# 설정 파일 심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/

# Nginx 설정 파일 문법 검사
sudo nginx -t

# Nginx 서버 재시작하여 설정 적용
sudo systemctl restart nginx

4. SSL 인증서 관리

인증서 상태 확인

# 설치된 SSL 인증서 정보 확인
sudo certbot certificates

자동 갱신 설정 확인

# 인증서 갱신 테스트 (실제로 갱신되지는 않음)
sudo certbot renew --dry-run

# 자동 갱신 서비스 동작 상태 확인
sudo systemctl status certbot.timer

✅ 설정 완료 후 확인사항

접속 테스트 방법

⚠️ 주의사항

🔍 문제 해결

오류 발생 시 Nginx 로그 확인 방법:

# Nginx 에러 로그 확인
sudo tail -f /var/log/nginx/error.log

# Nginx 접속 로그 확인
sudo tail -f /var/log/nginx/access.log

문제 발생 시 체크리스트